<meta charset="UTF-8"/>
<pre>
知识点一：位移运算符
	位移运算仅仅适用于整数~
	一共有以下三个：
	>>	按位右移 
	<< 	按位左移
	>>>	无符号右移
 
	左移格式：Val << N  让Val值的二进制码向左移动N位，其实就像等于乘以2^N次方
		注意：对于向左移动，右边空出来的会补零。
		
	右移格式：Val >> N  让Val值的二进制码向右移动N位 
		注意：对于右移动左边空出来的会用符号位的值填充。

	无符号右移格式：Val >>> N  让Val值的二进制码向右移动N位 
		注意：对于无符号右移动左边空出来的会用0值填充。

案例1：
	var a = 2;
	a << 3; 	//输出：16 相当于 2*2^3 = 16
	说明: a补码 0000 0010 -> 向左移动四位后变成 (0001 0000) 

案例2：
	var a = -2;
	a << 3;		//输出：-16
	说明:		a源码(1000 0010) -> 反码+1获取补码(1111 1110) -> 补码向左移动三位后(1111 0000)  
	对补码(1111 0000) 反码加1获取其源码(1001 0000) 也就是 -16
	规定：向左移动右边补零，左边溢出运算器最大位长的直接删除。

案例3：右移
	var d = 2;
	d >> 3;  //输出0
	说明：2源码(0000 0010) 向右移动三位 (0000 0000) 右边的补零。溢出的删掉了。

案例4：右移
	var d = -4;  
	d >> 3;	//结果 -1
	说明：-4的源码(1000 0100) -> 反码加1后获取补码(1111 1100) 向右移动3位后(1111 1111)这个刚好是负1的补码
	注意：按位操作是对补码的移动，而不是源码，当然正数的补码碰巧与源码相同。
 
案例5：无符号右移
 
	4 >>> 3;  //结果：0
	-4 >>> 3; //结果：536870911 = 2^29次方-1

	说明：-4补码是(1111 1100) -> 向右移3位后 (0001 1111)，在JS中整数运算默认是32位形式的就意味着后面有29个1+后补的3个0
	注意：JS中的位运算只能用在小于 2^32次方的整数上面进行，如果超过这个范围会被删减，结果没有意义。 


知识点二：如何显示一个数的n次方？
		语法格式
		Math.pow(x,n);
		Math.pow(2,29);  //Math是数学类，pow(x,y) 用来计算x的y次方式多少
</pre>